package com.redis.demo.service.impl;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.redis.demo.entity.Tag;
import com.redis.demo.mapper.TagMapper;
import com.redis.demo.service.TagService;
import com.redis.demo.utils.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * @date 2020/10/22 15:13
 */
@Service
public class TagServiceImpl implements TagService {

    @Autowired
    private TagMapper tagMapper;

    @Autowired
    private RedisUtil redisUtil;

    @Override
    public List<Tag> queryAllTagName() {
        List<Tag> tags = new ArrayList<>();
//        判断key是否存在，存在就去redis中取
        if (redisUtil.hasKey("tagList")) {
            String tagList = (String) redisUtil.get("tagList");
            tags = JSONObject.parseArray(tagList,Tag.class);
        }else {
//            如果redis中key不存在，就去数据库中查，并且重新存到redis中
            tags = tagMapper.queryAllTagName();
            String str = JSON.toJSON(tags).toString();
            redisUtil.set("tagList",str);
        }
        return tags;
    }
}
